#============================================
# 三板斧
# HttpResponse
# 返回字符串类型
# render
# 返回htm1页面并且在返回给浏览器之前还可以给html文件传值
# redirect
# 重定向
# #视图函数必须要返回一个HttpResponse对象正确
# 研究三者的源码即可得处结论
# The view app01. views . index didn't return an HttpResponse object. It
# returned None instead .

# # render简单内部原理
# from django. template import Temp1 ate，Context
# res = Template('<h1>{{ user }}</h1>')
# con = Context({ 'user' :{ 'username': ' jason'，'password' :123}})
# ret = res. render (con)
# print(ret)
# return HttpResponse(ret)
#============================================
# JsonResponse对象
# json格式的数据有什么用?
# 前后端数据交互需要使用到json作为过渡实现跨语言传输数据
# import json
# from django. http import JsonResponse
# def ab_json( request) :
# user_ dict = { 'username' : 'jason好帅哦我好喜欢!' ,'password':'123', 'hobby':'girl'}
# l = [111,222,333,444,555]
# #先转成json格式字符串
# # json. str = json. dumps (user_ dict,ensure_ ascii=False)
# #将该字符串返回
# # return HttpResponse(json_ str)
# #读源码掌握用法
# # return JsonResponse (user_dict, json_dumps_params={' ensure_ascii':False} )  字典
# # return JsonResponse(l,safe=False)   列表
# 默认只能序列化字典序列化其他需要加safe参数
# 前端序列化
# JSON. stringify( )
# JSON. parse( )
#============================================
# form表单上传文件及后端如何操作
# form表单上传文件类型的数据
# 1. method必须指定成post
# 2. enctype必须换成form_data
# def ab_ file( request):
# if request . method ==' POST' :
    # # print (request.POST) # 只能获取普通的简直对数据文件不行
    # print ( request. FILES )
    # #获取文件数据
    # # <MultiValueDict: {' file': [<InMemoryUploadedFile:u=1288812541, 1979816195& fm=26&gp=0. jpg ( image/jpeg)>]}>
    # file_qbj = request . FILEs.get('file') # 文件对象
    # print(file_ obj . name)
    # with open(file_obj.name, 'wb') as f:
        # for line in file_obj .chunks(): # 推荐加上chunks方法,其实加不加是一样的都是一行行的读取
        # f .write(line)
# return render (request, ' form. html' )

# 文件
# obj = request.FILE.get('file')  为一个对象  obj.name 获取文件名字
# for i in obj:
    # i 为文件 用来保存文件

#============================================
# request对象方法
# request . method
# request. POST
# request.GET
# request. FILES

# request. path
# request.path_ info
# request.get_ full_ path()能过获取完整的url及问号后面的参数
# print ( request.path) # /app01/ab_ file/
# print ( request.path_ info) # /app01/ab_ file/
# print ( request.get_ fu11_ path()) # /app01/ab_ file/ ?username=jason



